var express = require('express')
var router = express.Router()
var { formatResponse, analysisToken } = require('../utils/tool')

const { loginService, updateAdminService,registerService } = require('../service/adminService')
const { ValidationError } = require('../utils/errors')

// 登录
router.post('/login', async function (req, res, next) {
  console.log(req.session.captcha, 'session')
  if(!req.session.captcha) {
    res.send(formatResponse(0, '请先获取验证码', null))
    return
  }
  // 首先应该有一个验证码的验证
  if (req.body.captcha.toLowerCase() !== req.session.captcha.toLowerCase()) {
    // 如果进入此 if，说明是有问题的，用户输入的验证码不正确
    throw new ValidationError('验证码错误')
  }
  // 上面的验证码已经通过了
  const result = await loginService(req.body)
  if (result.token) {
    res.setHeader('authentication', result.token)
  }
  //查不到，用户名或密码错误
  if(!result.data) {
    res.send(formatResponse(0, '用户名或密码错误', result.data))
    return
  }
  res.send(formatResponse(0, '登录成功', result.data))
})

// 恢复登录状态
router.get('/whoami', async function (req, res, next) {
  // 1. 从客户端的请求拿到 token，然后解析 token，还原成有用的信息
  const token = analysisToken(req.get('Authorization'))
  // 2. 返回给客户端
  res.send(
    formatResponse(0, '', {
      loginId: token.loginId,
      name: token.name,
      id: token.id,
    })
  )
})

//修改密码
router.put('/', async function (req, res, next) {
  const result = await updateAdminService(req.body)
  res.send(result)
})

//注册
router.post('/regist', async function (req, res, next) {
  console.log(req.session.captcha, 'session')
  if(!req.session.captcha) {
    res.send(formatResponse(0, '请先获取验证码', null))
    return
  }
  // 首先应该有一个验证码的验证
  if (req.body.captcha.toLowerCase() !== req.session.captcha.toLowerCase()) {
    // 如果进入此 if，说明是有问题的，用户输入的验证码不正确
    throw new ValidationError('验证码错误')
  }
  const result = await registerService(req.body)
  res.send(formatResponse(0, '注册成功', result))
  
})
module.exports = router
